home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Utilities Experience
/
The Utilities Experience - Volume 1.iso
/
software
/
comms
/
term
/
extras
/
hydracom
/
amiga.notes
next >
Wrap
Text File
|
1995-12-15
|
7KB
|
135 lines
HYDRA protocol sample implementation, Amiga port rev.7 by
Olaf Barthel
Brabeckstrasse 35
D-30559 Hannover
eMail: olsen@sourcery.han.de
The Amiga support modules are freely distributable. For further information
on the remaining distribution refer to the files `hydra.asc' and
`hydra.doc'.
Many thanks to James McOrmond who supplied the HYDRA source code. This
program was compiled using the SAS/C compiler, it requires Kickstart 2.04
or higher to run.
*
What is HYDRA?
==============
HYDRA is a bidirectional file transfer protocol designed by Joaquim H.
Homrighausen and Arjen G. Lentz similar to Bimodem, a proprietary file
transfer protocol. It originated in the PC world and, as far as I know, has
been ported only to the Atari ST yet. This distribution adds an Amiga port.
The HYDRA protocol can send and receive data at the same time and also adds
a chat option.
What about the source code?
===========================
The source code included in this distribution was edited slightly to allow
the Amiga implementation to work properly. The original code was
busy-polling keyboard and serial line, a feature which needed to be
replaced by multitasking friendly code on the Amiga side. The Amiga port
tries to emulate the asynchronous serial I/O code the original PC version
of the HYDRA protocol sample implementation would use.
What about the documentation?
=============================
The file called `hydra.doc', to be found in the `source' directory
describes the HYDRA sample protocol implementation in detail. Refer to this
file for more information on the program.
Differences between the Amiga port and the original program
===========================================================
The original implementation did not support the "DEVICE" keyword which was
added to the Amiga port in order to allow third party serial device drivers
to be used. The split-screen technique used by the original implementation
was replaced by multiple console windows. Pull-down menus partly replace
the odd keyboard commands supported by the original implementation, i.e.
some keyboard commands work, some don't. There is no Fossil support in this
implementation ;-) All the features of the original implementation should
work, although some may not make much sense on the Amiga. There is no
separate HydraCfg program.
Where I needed to make changes to the source code my tag "/* OLSEN */"
indicates where to look for changes.
What's different in revision 2 of this port?
============================================
I had overlooked some MS-DOS dependancies in the source code, namely path
and file name lengths which used to be limited to 13 and 90 characters,
respectively. Where such restrictions were obvious they were removed.
HydraCom now offers an interface to the forthcoming new `term' release
and in fact any other terminal program that provides the same hooks as
`term'. If you give the name of the ARexx port `term' has open as the
device name (i.e. "device TERM") HydraCom will try to interface to `term'.
If successful, HydraCom will take over serial device processing, blocking
`term' access to the serial driver. When HydraCom is in posession of the
serial driver you may transfer files as usual, but remember that `term'
itself will be disabled while HydraCom is running. When finished, quit
HydraCom, this will return control back to `term'.
What's different in revision 3 of this port?
============================================
The device was not opened in shared mode, a feature many users have
requested. The window setup no longer requires 25 lines to fit on the
screen, now 20 will do.
What's different in revision 4 of this port?
============================================
Hydracom now looks for the Hydracom.cfg file in the same drawer the program
itself is found in first (for example, if you would have Hydracom stored in
the "Work:term" drawer, it would try to open the file
"Work:term/Hydracom.cfg" upon startup). When preparing a list of files to
upload, you can now use a standard file requester to pick the files from.
Note that a file transfer currently in progress will *continue* while you
pick the files to send. When initializing itself, the program will no
longer complain if less than 20 lines are available for the input window;
the new minimum value are three lines. The receive and send drawer names
did not get proper path separator characters appended; this caused files to
appear in the wrong drawers. File names are no longer converted into lower
case characters only. A very crude CPS calculation routine now supplies
data for the transfer progress display. The "Sending" and "Receiving" text
was off by one line. This has been fixed.
What's different in revision 5 of this port?
============================================
Previous Hydracom releases would set invalid file creation dates. The
frequent calls to time() would also be very costly in terms of speed. I
wrote replacements for all routines involved in setting, getting and
converting times and dates. They should be both faster and shorter now. In
addition to this the new routines pay attention to the current locale time
zone settings, always ignoring the global TZ variable. Please note that I
expect that the Atari ST and IBM-PC implementations of the Hydra protocol
will transmit time and date values with less precision than the Amiga
version does.
What's different in revision 6 of this port?
============================================
The cps display (which, by the way, is not very accurate) no longer causes
the window contents to scroll away on narrow screens. I walked through the
code and tried to find the Bermuda triangle where all the file names to
include blank spaces would vanish. I knocked over a bunch of tokenizing
routines, that should do it. On error or abort, hydracom will no longer
return result codes to the shell that invoked it that are difficult to
react upon. If something went wrong, 5 will be returned, otherwise it will
be 0. This makes it possible to check for "WARN" conditions in script
files and such. Hardware handshaking never got activated, the code did not
get called, now it does. All console windows now sport the main pull-down
menu, not just the bottommost one. The maximum block size is no longer
limited to 256 bytes, some code got lost.
What's different in revision 7 of this port?
============================================
Temporary file creation should work reliably now, permitting to run
multiple copies of the program from the same drawer. When going through
the `term'<->Hydracom rendezvous interface, Hydracom now uses the baud
rate and serial parameters passed with the rendezvous data. In this case
Hydracom will ignore the command line options for speed and parity. I also
went through the code and made sure that when receiving files, existing
files will get skipped.